/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package de.bht.esa.weather.weathersoapserver;

import de.bht.esa.weather.model.WetterComForecast;
import de.bht.esa.weather.model.WetterComLocation;
import de.bht.esa.weather.wettercomrestclient.WetterComRESTClient;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

/**
 * 
 * @author Andreas Goese
 * @author Sven Höche
 * 
 * Stellt einen Service bereit, der die Funktionen des Wetter.com REST Clients via SOAP anbietet.
 */
@WebService(serviceName = "WeatherService")
public class WeatherService {

    /**
     * Sucht nach Orten die einem gegebenen Query entsprechen. 
     * Die gefundenen Orte enthalten den City-Code, welcher benötigt wird um das Wetter bei Wetter.com abzurufen.
     * 
     * @param query Der Suchstring (z.B. Berlin, oder 13353)
     * @return Array mit den gefundenen Orten
     * @throws Exception 
     */
    @WebMethod(operationName = "getLocations")
    public WetterComLocation[] getLocations(@WebParam(name = "query") String query) throws Exception{
        WetterComRESTClient rClient = new WetterComRESTClient("7d28a85d58458126698d8db0521383ba","bhtesaweatherdemo");
        return rClient.getLocations(query);
    }
    
    /**
     * Gibt das Wetter für einen angegeben City-Code zurück.
     * 
     * @param cityCode Der City-Code des Ortes, für den das Wetter abgerufen werden soll.
     * @return Wetterbericht für den angegebenen Ort.
     * @throws Exception 
     */
    @WebMethod(operationName = "getForecast")
    public WetterComForecast getForecast(@WebParam(name = "cityCode") String cityCode) throws Exception{
        WetterComRESTClient rClient = new WetterComRESTClient("7d28a85d58458126698d8db0521383ba","bhtesaweatherdemo");
        return rClient.getForecast(cityCode);
    }
}
